Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

ДВОМІРНІ ПОБУДОВИ З ВИКОРИСТАННЯМ OpenGL ЗАСОБАМИ МОВИ C++

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Моделювання

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР ЗВІТ до лабораторної роботи №4 на тему: “ ДВОМІРНІ ПОБУДОВИ З ВИКОРИСТАННЯМ OpenGL ЗАСОБАМИ МОВИ C++” з курсу: « Геометричне моделювання у конструюванні інженерних обєктів та систем »  Основні теоретичні відомості     Текст програми: #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glaux.h> #include <math.h> #include <stdio.h> #define pi 3.14159265 const int minX = 0, minY = 0, maxX = 26, maxY = 10; static bool state = true; void CALLBACK resize(int width,int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(minX,maxX, minY,maxY, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } void drawRound(double left, double top, float radius, float rL, float gL, float bL) { float tmpY=0; float tmpX=0; float step = radius/(10*radius); glBegin(GL_LINE_LOOP); for(float i = -radius; i<=radius; i+=step) { glColor3f(rL,gL,bL); tmpY = sqrt(pow(radius,2)-pow(i,2)); glVertex2d(left+i, top+tmpY); } for(float i = radius; i>=-radius; i-=step) { tmpY = -sqrt(pow(radius,2)-pow(i,2)); glVertex2d(left+i, top+tmpY); } glEnd(); glFlush(); } void drawStar(double left, double top, double radiusB, double radiusS, int count, float rL, float gL, float bL, float rF, float gF, float bF) { float mainAngle = 2*pi/count; float smallAngle = mainAngle/2; glLineWidth(1); drawRound(left, top, radiusB, rL,gL,bL); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); glBegin(GL_POLYGON); for(int i = 0; i<count; i++) { glColor3f(rL,gL,bL); glVertex2f(left,top); glVertex2f(left+radiusB*sin(i*mainAngle),top+radiusB*cos(i*mainAngle)); glVertex2f(left+radiusS*sin((2*i+1)*smallAngle),top+radiusS*cos((2*i+1)*smallAngle)); } glEnd(); glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); glBegin(GL_POLYGON); for(int i = 0; i<count; i++) { glColor3f(rF, gF, bF); glVertex2f(left,top); glVertex2f(left+radiusB*sin(i*mainAngle),top+radiusB*cos(i*mainAngle)); glVertex2f(left+radiusS*sin((2*i-1)*smallAngle),top+radiusS*cos((2*i-1)*smallAngle)); } glEnd(); glFlush(); } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); drawStar(5,5,3,1,5,0.0,0.5,1.0,1.0,0.5,0.0); drawStar(13,5,3,2,6,0.0,0.5,1.0,1.0,0.5,0.0); drawStar(21,5,3,2,8,0.0,0.5,1.0,1.0,0.5,0.0); auxSwapBuffers(); } void main() { float pos[4] = {3,3,3,1}; float dir[3] = {-1,-1,-1}; auxInitPosition( 50, 50, 800, 300); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); auxInitWindow( (LPWSTR)"Bubela Andriy - OpenGL" ); auxIdleFunc(display); auxReshapeFunc(resize); glEnable(GL_ALPHA_TEST); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir); auxMainLoop(display); } Результат роботи програми:  Висновок: На даній лабораторній роботі я ознайомився та практично освоїв технології та основи роботи з графічними можливостями бібліотеки OpenGL на площині в середовищі Windows. Вивчив особливості підключення бібліотек при розробці програмних проектів. Ознайомився та засвоїв основні графічні функції, набув практичних навиків програмування графіки.
Антиботан аватар за замовчуванням

02.10.2020 20:10

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини